package com.delio.client.produccion.detallenotaingresos;

import java.util.List;

import com.extjs.gxt.ui.client.data.BaseFilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class DetalleNotaIngresos{

	private static DetalleNotaIngresoServiceAsync dnis = GWT.create(DetalleNotaIngresoService.class);
	public static ListStore<ModelData> store;
	public static ListStore<ModelData> storeCombo;
	public static PagingLoader<PagingLoadResult<ModelData>> loader;
	public static ListLoader<ListLoadResult<ModelData>> loaderCombo;
	public static Integer notaingreso_id;
	public static Integer detallenotaingreso_id;

public static void getPaginate() {
	System.out.println("el id de la notaingreso es"+notaingreso_id);
		RpcProxy<PagingLoadResult<DetalleNotaIngreso>> proxy = new RpcProxy<PagingLoadResult<DetalleNotaIngreso>>() {

			@Override
			protected void load(Object loadConfig,
			    AsyncCallback<PagingLoadResult<DetalleNotaIngreso>> callback) {
				dnis.paginateDetalleNotaIngreso((FilterPagingLoadConfig) loadConfig, notaingreso_id, callback);
			}  
	    };
	    loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()){  
	        @Override  
	        protected Object newLoadConfig() {  
	          BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();  
	          return config;  
	        }  
	      };  
        loader.setRemoteSort(true);  
        store = new ListStore<ModelData>(loader);
 }
 
 
 public static void getStore(){
		
	 RpcProxy<List<DetalleNotaIngreso>> proxy = new RpcProxy<List<DetalleNotaIngreso>>(){
	    protected void load(Object loadConfig, AsyncCallback<List<DetalleNotaIngreso>> callback){
		    dnis.ListarDetalleNotaIngresos(callback);
		 }
	  	};
	 loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());
	 storeCombo = new ListStore<ModelData>(loaderCombo);
	 loaderCombo.load();
	  
 }

   
    public static void listardireccionclienteCombo(){
      RpcProxy<List<DetalleNotaIngreso>> proxy = new RpcProxy<List<DetalleNotaIngreso>>(){
    		    protected void load(Object loadConfig, AsyncCallback<List<DetalleNotaIngreso>> callback){
    		       dnis.ListarDetalleNotaIngresos(callback);
    			 }
    		  	};
    	  	loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());  
    	    storeCombo = new ListStore<ModelData>(loaderCombo);	
      
    }
    
	public static void guardar(final DetalleNotaIngreso dni){
	 dnis.guardar(dni, new AsyncCallback<Boolean>(){

		@Override
		public void onFailure(Throwable caught) {
			MessageBox.alert("Error", "No pudo guardar", null);			
		}

		@Override
		public void onSuccess(Boolean result) {
           if(!result)
           	MessageBox.alert("Error", "No se guardo correctamente", null);
		}
	 });
   }
  
	public static void actualizar(DetalleNotaIngreso dni){
	 dnis.actualizar(dni, new AsyncCallback<Boolean>(){

	   @Override
	   public void onFailure(Throwable caught) {
		   MessageBox.alert("Error", "Error en la acutalizacion", null);	 
	   }	
		 
	   public void onSuccess(Boolean result){
		 if(result){
		   MessageBox.alert("Actualizado","Se actualizo Correctamente", null);
		 }else{
		   MessageBox.alert("Error", "No se actualizo Correctamente", null);	 
		 }
		}

	 });
 }
 
 public static void eliminar(Integer id){
     dnis.eliminar(id, new AsyncCallback<Boolean>(){
		
		 @Override
		 public void onFailure(Throwable caught){
			 MessageBox.alert("Error", "Error en la Eliminacion", null);
		 }
		 
		 public void onSuccess(Boolean result){
			 if(result){
			   MessageBox.alert("Eliminado","Se elimino Correctamente", null); 
			 }else{
			   MessageBox.alert("Error", "No se elimino Correctamente", null);	 
			 } 
		 }

	 });
 }
 
}